<?php
	include("../util.php");
	include("../config.inc.php");
	include("../clases.php");

	session_start();

if(!$_SESSION["obj_sesion"]->compruebaAcceso("ADME")){		echo "<script language='javascript'>location.href='salir.php'</script>";
		die(); }

switch($_REQUEST["action"]){

/*#######################################################################################################################################################*/
/*########################################################################  GRID  #######################################################################*/
/*#######################################################################################################################################################*/
	
	//Este es el caso del jqgrid de perfiles de usuarios
	case 'grid':{
		$page = $_GET['page']; // get the requested page
		$limit = $_GET['rows']; // get how many rows we want to have into the grid 
		$sidx = $_GET['sidx']; // get index row - i.e. user click to sort 
		$sord = $_GET['sord']; // get the direction 
		if(!$sidx) $sidx =1; 
		//Se introducen en arrays los campos que se desean obtener y sus respectivos alias para la consulta
		$campos = array('id_tipo','tipo','activo');
		$traductor = array('st.id_tipo','st.tipo','st.activo');

		descodificar_utf8_array($_GET);
		//Se obtiene el numero de tipos de seguridad que existen en la base de datos
		$result = consultaSimple("seguridad_tipos","","","COUNT(*) AS count");
		$count = $result['count']; 
		
		//Se obtiene el total de paginas de registros que tendrá el jqgrid
		if( $count >0 ) { 
			$total_pages = ceil($count/$limit); 
		} else { 
			$total_pages = 0;
		} 
		if ($page > $total_pages) 
			$page=$total_pages; 

		//Se obtiene el numero de registro por el que empezará la página actual del jqgrid
		$start = $limit*$page - $limit;

		$table =" seguridad_tipos st";

		$where="1=1 AND st.id_tipo != 0";
		$where .= formar_where_jqgrid($campos,$traductor,$_GET);
		$result = consultaMultiple($table,$where,"ORDER BY $sidx $sord LIMIT $start , $limit","st.id_tipo, st.tipo,st.activo");
		pasar_utf8_array($result);
		$responce->page = $page; 
		$responce->total = $total_pages; 
		$responce->records = $count; 
		
		//Se introducen en un arrray los datos de los tipos de seguridad que será el origen de datos del jqgrid
		for($i=0;$i<count($result);$i++){
			$responce->rows[$i]['id']=$result[$i]["id_tipo"]; 
			$responce->rows[$i]['cell']=array($result[$i]["id_tipo"],($result[$i]["tipo"]),($result[$i]["activo"]==1?'Si':'No'));
		}
		echo json_encode($responce); 
		die();
	}

/*#######################################################################################################################################################*/
/*##################################################################  FORMULARIO  #######################################################################*/
/*#######################################################################################################################################################*/

	//Este es el formulario de inserción y modificación de los tipos de seguridad(perfiles)
	case 'form':{
			$_action = "insertar";
			//Si recibimos un id de perfil es porque el formulario es de modificacion
			if (isset($_REQUEST["id_tipo"])){
				$_action = "modificar";
				//Se hace una consulta para obtener todos los datos del perfil
				$vector = consultaSimple("seguridad_tipos","id_tipo=".$_REQUEST["id_tipo"]);
				//Se hace una consulta para obtener todos los datos de los derechos de dicho perfil
				$derechos_tipo = consultaMultiple("seguridad_derecho_tipo","id_tipo=".$_REQUEST["id_tipo"]);
				
				pasar_utf8_array($vector);
				pasar_utf8_array($derechos_tipo);

				$derechos_usuario=array();
				$derechos_opciones=array();

				for($i=0;$i<count($derechos_tipo);$i++){
					$derechos_usuario[$derechos_tipo[$i]["id_derecho"]]="ok";
					$derechos_opciones[$derechos_tipo[$i]["id_derecho"]]=$derechos_tipo[$i]["id_opcion"];
				}
			}

			$derechos = consultaMultiple("seguridad_derechos sd LEFT JOIN seguridad_derechos_opciones sdo ON sd.id_derecho=sdo.id_derecho","","ORDER BY derecho","sd.id_derecho, sd.derecho, sd.cadena_derecho, sdo.id_opcion, sdo.opcion, sdo.cadena_opcion");
			pasar_utf8_array($derechos);
			//Se crea el formulario con los campos en los cuales se introduciran los datos del perfil, si el formulario es de modificacion se introduciran inicialmente los datos del perfil en los campos
			echo '<form id="form_perfil" style="margin:0px;">
					<input type="hidden" id="id_tipo" name="id_tipo" value="'.$_REQUEST["id_tipo"].'">
					<fieldset style="width:95% ">
					<legend class="txt_normal"><b>Datos Perfil</b></legend>
					<table border="0" cellpadding="3" cellspacing="2" width="80%" align="center">
					<tr>
						<td class="txt_normal" width="30%" align="right"><div id="cont_nombre">Nombre del Perfil (*)</div></td>
						<td style="text-align:left;"><input type="text" name="permiso" id="permiso" size="35" maxlength="50" value="'.$vector["tipo"].'"></td>
					</tr>
					<tr>
							<td class="txt_normal" align="right" valign="top"><div id="cont_derechos">Derechos (*)</div></td>
							<td align="left">
								<table width="100%" cellpadding="0" cellspacing="0">';

									for($i=0;$i<count($derechos);$i++){
										$vector_derechos[$derechos[$i]["id_derecho"]]["derecho"]=($derechos[$i]["derecho"]);

										if($derechos[$i]["id_opcion"]!="")
											$vector_derechos[$derechos[$i]["id_derecho"]]["opciones"][$derechos[$i]["id_opcion"]]=($derechos[$i]["opcion"]);
									}
									
									//Se crean comboboxs con los derechos del perfil
									foreach($vector_derechos as $key=>$value) {
										echo "<tr><td style='text-align:left;' class='txt_normal'><input type='checkbox' id='derecho#".$key."' name='derecho#".$key."' style='vertical-align:middle;'  ";
										if($derechos_usuario[$key]=="ok") echo " checked";
										echo "/>&nbsp;".$value["derecho"]."</td>";
										if(count($value["opciones"])>0){
											echo "<td><select id='opcion#".$key."' name='opcion#".$key."'>";
											foreach($value["opciones"] as $key_op=>$value_op){
												echo "<option value='".$key_op."'";
												if($derechos_opciones[$key]==$key_op) echo " selected ";
												echo ">".$value_op."</option>";
											}
											echo "</select></td>";
										}
										echo "</tr>";
									}

						echo '</table>
							</td>
						</tr>
						<tr>
							<td class="txt_normal_neg" colspan="2" align="center">Los campos marcados con un asterisco (*) son campos obligatorios.</td>
						</tr>
						<tr>
							<td class="txt_normal_neg" style="text-align:center; " colspan="2"><div id="contenedor"></div></td>
						</tr>	
					<tr>
						<td colspan="2" align="center">
							<input type="button" value="&nbsp;Aceptar" id="aceptar" name="aceptar" class="aceptar" onClick="javascript:guardar(\''.$_action.'\')">
						</td>
					</tr>
					</table>
					</fieldset>
				</form>';
		die();
	}

/*#######################################################################################################################################################*/
/*################################################### OPERACIONES DE EDICION DE REGISTROS ###############################################################*/
/*#######################################################################################################################################################*/

	//Se inserta un nuevo perfil de usuario
	case 'insertar':{
		if($_POST["permiso"]==""){ echo "nombre"; die(); }

		foreach($_POST as $key=>$value){
			$tmp = explode("#",$key);
			if($tmp[0]=="derecho" && $value=="on"){
				$vector_derechos[]=$tmp[1];
				if(isset($_POST["opcion#".$tmp[1]]))
					$vector_opciones[$tmp[1]]=$_POST["opcion#".$tmp[1]];
			}
		}

		if(count($vector_derechos)==0){ echo "derechos"; die(); }	
		
		//Se obtiene el id del nuevo perfil de usuario
		$id_max = maxId("seguridad_tipos","id_tipo");

		//Se introducen en un array los datos del perfil de usuario
		$vector = array();
		$vector["id_tipo"] = $id_max;
		$vector["tipo"] = $_POST["permiso"];
		$vector["activo"] = "1";
		//Se inserta en la base de datos el nuevo perfil
		insertaBD("seguridad_tipos",$vector);
		
		//Se recogen en un array los derechos del perfil de usuario		
		for($i=0;$i<count($vector_derechos);$i++){

			$vector = array();
			$vector["id_derecho"] = $vector_derechos[$i];
			$vector["id_tipo"] = $id_max;
	
			if(isset($vector_opciones[$vector["id_derecho"]]))
				$vector["id_opcion"] = $vector_opciones[$vector["id_derecho"]];
			//Se insertan en la base de datos los derechos del perfil de usuario
			insertaBD("seguridad_derecho_tipo",$vector);
		}

		echo "OK";
		die();
	};
	
	//Modifica el perfil de usuario previamente seleccionado
	case 'modificar':{
		if($_POST["permiso"]==""){ echo "nombre"; die();	}

		foreach($_POST as $key=>$value){
			$tmp = explode("#",$key);
			if($tmp[0]=="derecho" && $value=="on"){
				$vector_derechos[]=$tmp[1];
				if(isset($_POST["opcion#".$tmp[1]]))
					$vector_opciones[$tmp[1]]=$_POST["opcion#".$tmp[1]];
			}
		}

		if(count($vector_derechos)==0){ echo "derechos"; die(); }	

		$vector = array();
		$vector["tipo"] = $_POST["permiso"];

		modificaBD("seguridad_tipos",$vector,"id_tipo = ".$_POST["id_tipo"]);
						
		borraBD("seguridad_derecho_tipo","id_tipo=".$_POST["id_tipo"]);
				
		for($i=0;$i<count($vector_derechos);$i++){
			$vector = array();
			$vector["id_derecho"] = $vector_derechos[$i];
			$vector["id_tipo"] = $_POST["id_tipo"];
			if(isset($vector_opciones[$vector["id_derecho"]]))
				$vector["id_opcion"] = $vector_opciones[$vector["id_derecho"]];
			insertaBD("seguridad_derecho_tipo",$vector);
		}

		echo "OK";
		die();			
	};
	
	//Borra el perfil de usuario previamente seleccionado
	case 'borrar':{
		$vector = consultaMultiple("seguridad_usuarios","fecha_baja IS NULL AND id_tipo=".$_GET["id_tipo"]);

		if(count($vector)>0){
			echo "tiene_usuarios";
			die();
		}
		
		//Borra de la base de datos el perfil de usuario y los derechos asociados al mismo
		borraBD("seguridad_tipos","id_tipo=".$_GET["id_tipo"]);
		borraBD("seguridad_derecho_tipo","id_tipo=".$_GET["id_tipo"]);

		echo "OK";
		die();
	};
	
	/*case 'cambiar_estado':{
		$consulta = "UPDATE seguridad_tipos SET activo=".$_GET["estado"]." WHERE id_tipo=".$_GET["id_tipo"];
		mysql_query($consulta);
	
		if($_GET["estado"]==0){
			$consulta = "UPDATE seguridad_usuarios usu SET usu.activo=0 WHERE usu.id_tipo=".$_GET["id_tipo"];
			mysql_query($consulta);
		}

		header("Location:../fcontenido.php?modulo=perfiles");
		break;
	};*/
};
?>
